#include "sendHeartInfo.h"
#include "parseAdList.h"

void cmdHandler(cJSON* cmd_list);

// 回调函数用于接收响应数据
static size_t sendHeartCallback(void *contents, size_t size, size_t nmemb, void *userp) {
    size_t realsize = size * nmemb;
    // 这里可以处理获取到的数据，比如存储到文件或者其他操作
    char * result = (char *)contents;
    cJSON* root = cJSON_Parse(result);
    cJSON* successJson = cJSON_GetObjectItemCaseSensitive(root,"success");
    cJSON* codeJson = cJSON_GetObjectItemCaseSensitive(root,"code");
    cJSON* messageJson = cJSON_GetObjectItemCaseSensitive(root,"message");
    if (cJSON_IsFalse(successJson))
    {
        //如果没有传送成功，就打印错误信息
        printf("code=%d ,message =%s\n",codeJson->valueint,messageJson->valuestring);
    }else{
        //否则就获取data中的数据
        //获取data数据
        cJSON* dataJson = cJSON_GetObjectItemCaseSensitive(root,"data"); 
        if (dataJson!=NULL)
        {
            //在从data中解析出cmd_list和ad_list数据
            cJSON* cmd_list = cJSON_GetObjectItemCaseSensitive(dataJson,"cmd_list");
            cmdHandler(cmd_list);
            //处理广告列表
            cJSON* ad_list = cJSON_GetObjectItemCaseSensitive(dataJson,"ad_list");
            //解析列表
            parseAdList(ad_list);
        }
        
    }

    return realsize;
}

void sendHeartInfo(gchar* gateWayIp,gchar* sn){
    char* urlFormat = "http://%s/hearts.json?sn=%s";
    char* url = calloc(1,256);
    sprintf(url,urlFormat,gateWayIp,sn);
    //发送配置信息
    sendGetRequest(url,sendHeartCallback);
    free(url);
}

//处理后台传递过来的cmd
void cmdHandler(cJSON* cmd_list){
    //如果这个参数是一个数组
    if (cJSON_IsArray(cmd_list))
    {
        //获取数组长度
        int size = cJSON_GetArraySize(cmd_list);
        //遍历这个数组，获取数组中的值
        for (int i = 0; i < size; i++)
        {
            cJSON* item = cJSON_GetArrayItem(cmd_list,i);
            int cmd = item->valueint;
            switch (cmd)
            {
            case 1:
                
                break;
            case 2:
                
                break;
            case 3:
                
                break;
            
            default:
                break;
            }
        }
        
    }
    
}